package cn.iocoder.yudao.module.system.service.auth;

import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
import cn.iocoder.yudao.module.system.dal.dataobject.portal.PortalUserDO;
import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum;

/**
 * 门户网站认证服务（复用后台VO，仅处理门户用户）
 */
public interface PortalAuthService {

    /**
     * 门户用户账号密码登录（复用AuthLoginReqVO）
     * @param reqVO 登录请求（含用户名、密码、验证码）
     * @return 登录结果（token、用户信息等，复用AuthLoginRespVO）
     */
    AuthLoginRespVO login(AuthLoginReqVO reqVO);

    /**
     * 门户用户刷新令牌（复用后台逻辑）
     * @param refreshToken 刷新令牌
     * @return 新的登录结果
     */
    AuthLoginRespVO refreshToken(String refreshToken);

    /**
     * 门户用户登出
     * @param token 访问令牌
     * @param logType 登出类型（参考LoginLogTypeEnum.LOGOUT_SELF）
     */
    void logout(String token, Integer logType);

    PortalUserDO authenticate(String username, String password);

    AuthLoginRespVO createTokenAfterLoginSuccess(PortalUserDO portalUser, String username, LoginLogTypeEnum logType);

    /**
     * 三方用户鉴权接口
     *
     */
    Boolean identityAuthenticate(String username, String password);


}